/**
 * 创建Account类的一个子类CheckAccount代表可透支的账户，该账户中定义一个属性overdraft代表可透支限额。
 * 在CheckAccount类中重写withdraw方法，其算法如下：
 * ————————————————————————————————————————
 * 如果（取款金额<账户余额），
 * 	可直接取款
 * 如果（取款金额>账户余额），
 * 	计算需要透支的额度
 * 	判断可透支额overdraft是否足够支付本次透支需要，如果可以
 * 		将账户余额修改为0，冲减可透支金额
 * 	如果不可以
 * 		提示用户超过可透支额的限额
 * ————————————————————————————————————————
 */
public class CheckAccount extends Account{
    private  double overdraft;

    public double getOverdraft() {
        return overdraft;
    }

    public CheckAccount(int id, double balance, double annuallnterestRate, double overdraft) {
        super(id, balance, annuallnterestRate);
        this.overdraft = overdraft;
    }

    public void setOverdraft(double overdraft) {
        this.overdraft = overdraft;
    }

    @Override
    public void withdraw(double amount){
        if (amount < getBalance()){
            //错误的setBalance(getBalance() -= amount);
            //正确:调用父类中被重写的方法
            super.withdraw(amount);
        } else if (amount >= getBalance() + overdraft) {
            overdraft -= (amount -getBalance());
            super.withdraw(getBalance());        //全部取光  注意与上一步的顺序
        }else{
            System.out.println("超过可透支限额");
        }

    }
}
